//
//  XWHTableViewBaseVC.swift
//  XiaoweHealthy
//
//  Created by Riven on 2022/4/17.
//

import UIKit
import DMRCommonBaseLib


class XWHTableViewBaseVC: XWHBaseVC {
    
    lazy var tableView = UITableView(frame: .zero, style: .grouped)

    override func viewDidLoad() {
        super.viewDidLoad()
        
        registerViews()
    }
    
    override func setupNavigationItems() {
        super.setupNavigationItems()
        
        setNav(color: .white)
    }
    
    override func setNavigationBarWithLargeTitle() {
        setNav(color: .white)
        navigationItem.title = titleText
    }
    
    override func resetNavigationBarWithoutLargeTitle() {
        setNav(color: .white)
        navigationItem.title = ""
    }
    
    override func setLargeTitleMode() {
        isUseLargeTitleMode = true
        
        // 大标题方式2
        setLargeTitleModeSecond()
    }
    
    /// 设置第二种方式
    final func setLargeTitleModeSecond() {
        tableView.addSubview(largeTitleView)
        setTopInsetForLargeTitle(in: tableView)
    }
    
    override func addSubViews() {
        super.addSubViews()
        
        view.addSubview(tableView)

        config(tableView: tableView)
    }
    
    func config(tableView: UITableView) {
        tableView.dataSource = self
        tableView.delegate = self
        tableView.backgroundColor = UIColor.white
        tableView.showsVerticalScrollIndicator = false
        tableView.showsHorizontalScrollIndicator = false
        tableView.contentInsetAdjustmentBehavior = .never
        tableView.separatorStyle = .none
        tableView.estimatedRowHeight = 0
        tableView.estimatedSectionHeaderHeight = 0
        tableView.estimatedSectionFooterHeight = 0
    }
    
    func configTableViewEmptyDataSetView(tableView: UITableView) {
        let attrString = NSAttributedString(string: "暂无数据", attributes: [.font: AppFont.harmonyOSSans(ofSize: 14, weight: .regular), .foregroundColor: minorTextColor])
        tableView.emptyDataSetView { view in
            let offset = -(view.height / 2) + 80
            view.titleLabelString(attrString)
                .image(R.image.device_empty_image())
                .dataSetBackgroundColor(UIColor.white)
                .verticalOffset(offset)
                .shouldDisplay(true)
                .shouldFadeIn(true)
                .isTouchAllowed(true)
//                .didTapDataButton {
//                    // Do something
//                }
//                .didTapContentView {
//                    // Do something
//                }
        }
    }
    
    override func relayoutSubViews() {
        tableView.snp.makeConstraints { make in
            make.edges.equalToSuperview()
        }
    }
    
    @objc func relayoutTableView(leftRightInset: CGFloat = 16) {
        tableView.snp.remakeConstraints { make in
            make.left.right.equalToSuperview().inset(leftRightInset)
            make.top.equalToSuperview()
            make.bottom.equalTo(view.safeAreaLayoutGuide.snp.bottom)
        }
    }
    
    override func relayoutLargeTitle() {
        relayoutLargeTitleSecond()
    }
    
    final func relayoutCommon() {
        // 大标题方式2
        tableView.snp.remakeConstraints { make in
            make.left.right.equalToSuperview()
            make.top.equalToSuperview()
            make.bottom.equalTo(view.safeAreaLayoutGuide.snp.bottom)
        }
        
        relayoutLargeTitleSecond()
        relayoutLargeTitleContentView()
    }
    
    final func relayoutLargeTitleSecond() {
        largeTitleView.snp.remakeConstraints { make in
            make.centerX.equalToSuperview()
            make.width.equalTo(largeTitleWidth)
            make.top.equalToSuperview().inset(-largeTitleHeight)
            make.height.equalTo(largeTitleHeight)
        }
    }
    
//    func relayoutLargeTitleContentView(leftRightInset: CGFloat = 28) {
//        largeTitleView.relayout { ltView in
//            ltView.button.snp.remakeConstraints { make in
//                make.right.equalToSuperview().inset(leftRightInset)
//                make.size.equalTo(24)
//                make.centerY.equalTo(ltView.titleLb)
//            }
//
//            ltView.titleLb.snp.remakeConstraints { make in
//                make.top.equalToSuperview()
//                make.height.equalTo(40)
//                make.left.equalToSuperview().inset(leftRightInset)
//                make.right.lessThanOrEqualTo(ltView.button.snp.left).offset(-10)
//            }
//        }
//    }
    
    @objc func registerViews() {
        
    }
    
}

// MARK: - UITableViewDataSource & UITableViewDelegate & UITableViewRoundedProtocol
@objc extension XWHTableViewBaseVC : UITableViewDataSource, UITableViewDelegate, UITableViewRoundedProtocol {
    
    func numberOfSections(in tableView: UITableView) -> Int {
        return 1
    }
    
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 0
    }
    
    func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
        return 44
    }
    
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        return UITableViewCell()
    }
    
    func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
//        rounded(tableView, willDisplay: cell, forRowAt: indexPath)
    }
    
    func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
        return 0.001
    }

    func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
        return UIView()
    }

    func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
        return 0.001
    }

    func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
        return UIView()
    }
    
//    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
//
//    }
    
    // MARK: - UIScrollViewDeletate
    override func scrollViewDidScroll(_ scrollView: UIScrollView) {
        handleScrollLargeTitle(in: scrollView)
    }

}
